Array, String, Map, Set, TypedArray, arguments, and NodeList are iterable by default. for...of calls the [Symbol.iterator]() method and loops over the value property of each next() result until done is true.
Under the hood, for...of obtains the iterator by calling the object's [Symbol.iterator]() method, then repeatedly calls the iterator's next() method, storing the value property in the loop variable and stopping when done is true. Example: const arr = [1,2,3]; for (const v of arr) { console.log(v); }